type: object
properties:
  type:
    description: 'the type of the resource'
    type: string
    enum:
      - MeshMetric
  mesh:
    description: 'Mesh is the name of the Kuma mesh this resource belongs to. It may be omitted for cluster-scoped resources.'
    type: string
    default: default
  name:
    description: 'Name of the Kuma resource'
    type: string
  spec:
    description: Spec is the specification of the Kuma MeshMetric resource.
    properties:
      default:
        description: MeshMetric configuration.
        properties:
          applications:
            description: Applications is a list of application that Dataplane Proxy will scrape
            items:
              properties:
                address:
                  description: Address on which an application listens.
                  type: string
                name:
                  description: Name of the application to scrape
                  type: string
                path:
                  default: /metrics/prometheus
                  description: Path on which an application expose HTTP endpoint with metrics.
                  type: string
                port:
                  description: Port on which an application expose HTTP endpoint with metrics.
                  format: int32
                  type: integer
              required:
                - port
              type: object
            type: array
          backends:
            description: Backends list that will be used to collect metrics.
            items:
              properties:
                openTelemetry:
                  description: OpenTelemetry backend configuration
                  properties:
                    endpoint:
                      description: Endpoint for OpenTelemetry collector
                      type: string
                  required:
                    - endpoint
                  type: object
                prometheus:
                  description: Prometheus backend configuration.
                  properties:
                    clientId:
                      description: ClientId of the Prometheus backend. Needed when using MADS for DP discovery.
                      type: string
                    path:
                      default: /metrics
                      description: Path on which a dataplane should expose HTTP endpoint with Prometheus metrics.
                      type: string
                    port:
                      default: 5670
                      description: Port on which a dataplane should expose HTTP endpoint with Prometheus metrics.
                      format: int32
                      type: integer
                    tls:
                      description: Configuration of TLS for prometheus listener.
                      properties:
                        mode:
                          default: Disabled
                          description: Configuration of TLS for Prometheus listener.
                          enum:
                            - Disabled
                            - ProvidedTLS
                            - ActiveMTLSBackend
                          type: string
                      required:
                        - mode
                      type: object
                  required:
                    - path
                    - port
                  type: object
                type:
                  description: Type of the backend that will be used to collect metrics. At the moment only Prometheus backend is available.
                  enum:
                    - Prometheus
                    - OpenTelemetry
                  type: string
              required:
                - type
              type: object
            type: array
          sidecar:
            description: Sidecar metrics collection configuration
            properties:
              includeUnused:
                default: false
                description: |-
                  IncludeUnused if false will scrape only metrics that has been by sidecar (counters incremented
                  at least once, gauges changed at least once, and histograms added to at
                  least once). If true will scrape all metrics (even the ones with zeros).
                type: boolean
              regex:
                description: Regex that will be used to filter sidecar metrics. It uses Google RE2 engine https://github.com/google/re2
                type: string
            type: object
        type: object
      targetRef:
        description: |-
          TargetRef is a reference to the resource the policy takes an effect on.
          The resource could be either a real store object or virtual resource
          defined in-place.
        properties:
          kind:
            description: Kind of the referenced resource
            enum:
              - Mesh
              - MeshSubset
              - MeshGateway
              - MeshService
              - MeshServiceSubset
              - MeshHTTPRoute
            type: string
          mesh:
            description: Mesh is reserved for future use to identify cross mesh resources.
            type: string
          name:
            description: |-
              Name of the referenced resource. Can only be used with kinds: `MeshService`,
              `MeshServiceSubset` and `MeshGatewayRoute`
            type: string
          proxyTypes:
            description: |-
              ProxyTypes specifies the data plane types that are subject to the policy. When not specified,
              all data plane types are targeted by the policy.
            items:
              enum:
                - Sidecar
                - Gateway
              type: string
            minItems: 1
            type: array
          tags:
            additionalProperties:
              type: string
            description: |-
              Tags used to select a subset of proxies by tags. Can only be used with kinds
              `MeshSubset` and `MeshServiceSubset`
            type: object
        type: object
    required:
      - targetRef
    type: object
